package com.citusdata.elven.datastore;

import com.citusdata.elven.datastore.DatastoreKey;
import com.citusdata.elven.datastore.DatastoreValue;


public class DatastoreEntry {
  private final DatastoreKey   datastoreKey;
  private final DatastoreValue datastoreValue;

  public DatastoreEntry(byte[] keyBytes, byte[] valueBytes) {
    this.datastoreKey   = new DatastoreKey(keyBytes);
    this.datastoreValue = new DatastoreValue(valueBytes);
  }

  public DatastoreEntry(DatastoreKey key, DatastoreValue value) {
    this.datastoreKey   = key;
    this.datastoreValue = value;
  }

  public boolean equals(Object obj) {
    if (!(obj instanceof DatastoreEntry)) {
      return false;
    }

    DatastoreEntry entry = (DatastoreEntry) obj;
    return (entry.datastoreKey.equals(datastoreKey)) && 
           (entry.datastoreValue.equals(datastoreValue));
  }

  public int hashCode() {
    int result = 17;
    result = 37*result + datastoreKey.hashCode();
    result = 37*result + datastoreValue.hashCode();
    return result;
  }

  public DatastoreKey getDatastoreKey() {
    return datastoreKey;
  }

  public DatastoreValue getDatastoreValue() {
    return datastoreValue;
  }
}
